<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    const myTarget = {}
    const proxy = new Proxy(myTarget, {
        get(target, property, receiver) {
            console.log('get');
            return Reflect.get(...arguments)
        }
    })
    proxy.foo // get
    
    /*
        1.返回值
            -无限制
            
        2.拦截的操作
            -proxy.property
            -proxy[property]
            -Object.create(proxy)[property]
            -Reflect.get(proxy,property,receiver)
        3.捕获器处理程序参数
            -target:目标对象
            -property:引用的目标对象上的字符串键属性
            -receiver:代理对象或集成代理对象的对象
        4.捕获不变式
            如果target.property不可写且不可配置,则处理程序返回的值必须与target.property匹配
            如果target.property不可配置且[[Get]]特性为undefined,处理程序的返回值也必须是undefined
     */
</script>
</body>
</html>